package com.example.matchandroiddevices.test.readers;

public class ReaderInfo {
    // 更新ReaderInfo类
        public int responseLength;    // 响应长度字节
        public int readerAddress;     // 读卡器地址
        public int status;            // 状态码
        public String errorMessage;   // 错误信息
        public byte[] rawData;        // 原始数据部分

        // 解析出的信息
        public int version;            // 软件版本
        public int rfu;                // 保留
        public int readerType;         // 读写器类型
        public int inventoryScanTime;  // 库存扫描时间

        // 检查是否成功
        public boolean isSuccess() {
            return status == 0x00;
        }

        // 检查是否是RR7036读写器
        public boolean isRR7036() {
            return (readerType & 0xFF) == 0x66;
        }

        // 获取支持的协议
        public String[] getSupportedProtocols() {
            java.util.List<String> protocols = new java.util.ArrayList<>();

            // 检查位11 - ISO/IEC 15693
            if ((readerType & (1 << 11)) != 0) {
                protocols.add("ISO/IEC 15693");
            }

            // 检查位10 - ISO/IEC 14443
            if ((readerType & (1 << 10)) != 0) {
                protocols.add("ISO/IEC 14443");
            }

            // 检查位9 - ICODE UID
            if ((readerType & (1 << 9)) != 0) {
                protocols.add("ICODE UID");
            }

            return protocols.toArray(new String[0]);
        }

        @Override
        public String toString() {
            StringBuilder sb = new StringBuilder();
            sb.append("读卡器信息:\n");
            sb.append("响应长度: ").append(responseLength).append("\n");
            sb.append("读卡器地址: 0x").append(String.format("%02X", readerAddress)).append("\n");
            sb.append("状态: 0x").append(String.format("%02X", status));

            if (!isSuccess()) {
                sb.append(" (").append(errorMessage).append(")");
            }
            sb.append("\n");

            if (isSuccess() && rawData != null) {
                sb.append("版本号: 0x").append(String.format("%04X", version)).append("\n");
                sb.append("RFU: 0x").append(String.format("%04X", rfu)).append("\n");
                sb.append("读写器类型: 0x").append(String.format("%04X", readerType)).append("\n");

                if (isRR7036()) {
                    sb.append("设备类型: RR7036\n");
                } else {
                    sb.append("设备类型: 未知(0x").append(String.format("%02X", readerType & 0xFF)).append(")\n");
                }

                sb.append("支持的协议: ");
                String[] protocols = getSupportedProtocols();
                if (protocols.length > 0) {
                    sb.append(String.join(", ", protocols));
                } else {
                    sb.append("未知");
                }
                sb.append("\n");

                sb.append("库存扫描时间: ").append(inventoryScanTime).append("ms\n");
            }

            return sb.toString();
        }
    }

